Atributos Gerais

long int cdForeground(long int color); [em C]
cdForeground(color: color_tag) -> (old_color: color_tag) [em Lua]

Configura a nova cor de frente corrente e fornece como retorno a anterior. Esta cor é utilizada em todas as primitivas (linhas, áreas, marcas e texto). Valor padrão: CD_BLACK. O valor CD_QUERY simplesmente retorna o valor corrente.

long int cdBackground(long int color); [em C]
cdBackground(color: color_tag) -> (old_color: color_tag) [em Lua]

Configura a nova cor de fundo corrente e fornece como retorno a anterior. Contudo, ele não modifica automaticamente o fundo de um canvas. Para isto, é necessário chamar a função cdClear. A cor de fundo só faz sentido para a cdClear, e para primitivas que são afetadas pelo atributo de opacidade de fundo. Valor padrão: CD_WHITE. O valor CD_QUERY simplesmente retorna o valor corrente.

int cdBackOpacity(int opacity); [em C]
cdBackOpacity(opacity: number) -> (old_opacity: number) [em Lua]

Configura a opacidade do fundo para as primitivas de preenchimento baseadas em cores de frente e fundo. Valores: CD_TRANSPARENT ou CD_OPAQUE. Se ela for opaca, a primitiva de texto, por exemplo, apagará tudo o que estiver na caixa envolvente com a cor de fundo. Se for transparente, apenas a cor de frente é pintada. O mesmo vale para os estilos interiores de hatch e stipple, e para linhas com estilo diferente de CD_CONTINUOUS. Retorna o valor anterior. Valor padrão: CD_TRANSPARENT. O valor CD_QUERY simplesmente retorna o valor corrente.

int cdWriteMode(int mode); [em C]
cdWriteMode(mode: number) -> (old_mode: number) [em Lua]

Define o modo de escrita para todas as primitivas de desenho. Valores: CD_REPLACE, CD_XOR ou CD_NOT_XOR. Retorna o valor anterior. Valor padrão: CD_REPLACE. O valor CD_QUERY simplesmente retorna o valor corrente.


Atributos de Linha

int cdLineStyle(int style); [em C]
cdLineStyle(style: number) -> (old_style: number) [em Lua]

Configura o estilo de linha corrente para: CD_CONTINUOUS, CD_DASHED, CD_DOTTED, CD_DASH_DOT ou CD_DASH_DOT_DOT. Retorna o valor anterior. Valor padrão: CD_CONTINUOUS. O valor CD_QUERY simplesmente retorna o valor corrente.

int cdLineWidth(int width); [em C]
double cdLineWidth(double width); (WC) [em C]
cdLineWidth(width: number) -> (old_width: number) [em Lua]
wdLineWidth(width: number) -> (old_width: number) (WC) [em Lua]

Configura a espessura de linha corrente (em pixels). Retorna o valor anterior. Valor padrão: 1. O valor CD_QUERY simplesmente retorna o valor corrente. Intervalo de espessura válido: >= 1.

Em WC, configura a espessura de linha corrente em milímetros. 


Atributos de Marca

int cdMarkType(int type); [em C]
cdMarkType(type: number) -> (old_type: number) [em Lua]

Configura o tipo de marca corrente para: CD_PLUS, CD_STAR, CD_CIRCLE, CD_X, CD_BOX, CD_DIAMOND, CD_HOLLOW_CIRCLE, CD_HOLLOW_BOX ou CD_HOLLOW_DIAMOND. Retorna o valor anterior. Valor padrão: CD_STAR. O valor CD_QUERY simplesmente retorna o valor corrente.

int cdMarkSize(int size); [em C]
double
cdMarkSize(double size); (WC) [em C]
cdMarkSize(size: number) -> (old_size: number) [em Lua]
wdMarkSize(size: number) -> (old_size: number) (WC) [em Lua]

Configura o tamanho da marca em pixels. Retorna o valor anterior. Valor padrão: 10. O valor CD_QUERY simplesmente retorna o valor corrente. Intervalo de espessura válido: >= 1.

Em WC, configura o tamanho da marca em milímetros. 


Atributos de Preenchimento

int cdInteriorStyle(int style); [em C]
cdInteriorStyle(style: number) -> (old_style: number) [em Lua]

Configura o estilo corrente para as primitivas de preenchimento de área: CD_SOLID, CD_HOLLOW, CD_HATCH, CD_STIPPLE ou CD_PATTERN. Note que CD_HATCH e CD_STIPPLE são afetados pela opacidade de fundo corrente. Retorna o valor anterior. Valor padrão: CD_SOLID. O valor CD_QUERY simplesmente retorna o valor corrente. Caso o stipple ou pattern não estejam definidos o estado do atributo não é modificado. O estilo CD_HOLLOW, quando este estilo está definido as funções cdBox e cdSector se comportam como suas equivalentes cdRect e cdArc, e os polígonos com estilo CD_FILL se comportam como CD_CLOSED_LINES.

int cdHatch(int style); [em C]
cdHatch(style: number) -> (old_style: number) [em Lua]

Seleciona um estilo de hatch pré-definido (CD_HORIZONTAL, CD_VERTICAL, CD_FDIAGONAL, CD_BDIAGONAL, CD_CROSS ou CD_DIAGCROSS) e configura o estilo de interior para CD_HATCH. Retorna o valor anterior. Valor padrão: CD_HORIZONTAL. O valor CD_QUERY simplesmente retorna o valor corrente.

void cdStipple(int w, int h, unsigned char *fgbg) [em C]
cdStipple(stipple: stipple_tag) [em Lua]

Define uma matriz wxh de zeros e uns. Os zeros são mapeados para a cor de fundo ou são transparentes, de acordo com o atributo de opacidade do fundo. Os uns são mapeados para a cor de frente. A função configura o estilo interior para CD_STIPPLE. Para evitar ter que lidar com matrizes em C, o elemento (i,j) de fgbg é armazenado como fgbg[j*w+i]. A origem é o canto inferior esquerdo da imagem. Não tem como ser consultado. Não precisa ser guardado pela aplicação, é replicado internamente pela biblioteca.

Em WC, pode-se especificar um stipple com seu tamanho desejado em coordenadas de mundo. Veja função wdStipple.

unsigned char * cdGetStipple(int* w, int* h); [em C]
cdGetStipple() - > (stipple: stipple_tag) [em Lua]

Retorna o stipple atual e suas dimensões. Retorna NULL se nenhum stipple foi definido.

void cdPattern(int w, int h, long int *color); [em C]
cdPattern(pattern: pattern_tag) [em Lua]

Define uma matriz wxh de cores e configura o estilo interior para CD_PATTERN. Para evitar ter que lidar com matrizes em C, o elemento de cores (i,j) é armazenado como color[j*w+i]. A origem é o canto inferior esquerdo da imagem.  Não tem como ser consultado. Não precisa ser guardado pela aplicação, é replicado internamente pela biblioteca.

Em WC, pode-se especificar um pattern com seu tamanho desejado em coordenadas de mundo. Veja função wdPattern.

long int * cdGetPattern(int* w, int* h); [em C]
cdGetPattern() - > (pattern: pattern_tag) [em Lua]

Retorna o pattern atual e suas dimensões. Retorna NULL se nenhum pattern foi definido.


Atributos de Texto

void cdFont(int typeface, int style, int size); [em C]
void wdFont(int typeface, int style, double size); (WD) [em C]
cdFont(typeface, style, size: number) [em Lua]
wdFont(typeface, style, size: number) (WD) [em Lua]

Seleciona uma fonte de texto. O tipo da fonte pode ser: CD_SYSTEM, CD_COURIER, CD_TIMES_ROMAN ou CD_HELVETICA. O estilo pode ser: CD_PLAIN, CD_BOLD, CD_ITALIC ou CD_BOLD_ITALIC. O tamanho é dado em points (1/72 de polegada) e, para facilitar a escolha, a biblioteca CD possui três constantes: CD_SMALL=8, CD_STANDARD=12 e CD_LARGE=18. Aqui foram utilizados points pois é uma unidade comum para definir o tamanho de fontes.  Valores padrão: CD_SYSTEM, CD_PLAIN, CD_STANDARD.
Caso você deseje especificar um valor em pixels, simplesmente passe o valor do tamanho em pixels, mas forneça um valor negativo, dessa maneira a função saberá que o valor passado é em pixels e não em points. Se você quiser especificar em pixels, mas quer que a função mantenha o valor em points, você deve utilizar a função cdPixel2MM para converter de pixels para milímetros e então empregue a fórmula "(valor em points) = 2.84 * (valor em milímetros)" para converter de milímetros para points. No lugar do valor 2.84 pode-se usar a definição CD_MM2PT.

Em WC, o tamanho é especificado em milímetros, mas internamente é passado o valor em points.

void cdGetFont(int *typeface, int *style, int *size); [em C]
void wdGetFont(int *typeface, int *style, double *size); (WC) [em C]
cdGetFont() -> (typeface, style, size: number) [em Lua]
wdGetFont() -> (typeface, style, size: number) (WC) [em Lua]

Retorna os valores da fonte modificada pela função cdFont, ignora os valores modificados pela função cdNativeFont. Não é necessário fornecer todos os ponteiros de retorno, pode-se fornecer apenas para os valores desejados.

Em WC, o tamanho é retornado em milímetros.

char* cdNativeFont(char* font); [em C]
cdNativeFont(font: string) -> (old_font: string) [em Lua]

Seleciona uma fonte de texto nativa. A descrição da fonte é dependente do driver e da plataforma. Não precisa ser guardado pela aplicação, é replicado internamente pela biblioteca. Retorna a string anterior. Passando NULL como parâmetro, apenas retorna a string anterior e não modifica a fonte. O valor retornado é o último valor atribuido, pode não ser exatamente a fonte escolhida pelo driver.

int cdTextAlignment(int alignment); [em C]
cdTextAlignment(alignment: number) -> (old_alignment: number) [em Lua]

Define o alinhamento vertical e horizontal de um texto como: CD_NORTH, CD_SOUTH, CD_EAST, CD_WEST, CD_NORTH_EAST, CD_NORTH_WEST, CD_SOUTH_EAST, CD_SOUTH_WEST, CD_CENTER, CD_BASE_LEFT, CD_BASE_CENTER, ou CD_BASE_RIGHT. Retorna o valor anterior. Valor padrão: CD_BASE_LEFT. O valor CD_QUERY simplesmente retorna o valor corrente.

double cdTextOrientation(double angle); [em C]
cdTextOrientation(angle: number) -> (old_angle: number) [em Lua]

Define a orientação do texto, que é um ângulo em graus relativo à linha horizontal de acordo com a qual o texto é desenhado. Retorna o valor anterior. O valor CD_QUERY simplesmente retorna o valor corrente. O valor padrão é 0. (Note que a maioria dos drivers NÃO implementa este atributo. Atualmente só os drivers derivados do driver básico Windows (com exceção do WMF), o driver PS e o driver DXF.)


Atributos de Texto Vetorial

void cdVectorTextDirection(int x1, int y1, int x2, int y2); [em C]
void wdVectorTextDirection(double x1, double y1, double x2, double y2); (WC) [em C]
cdVectorTextDirection(x1, y1, x2, y2: number) [em Lua]
wdVectorTextDirection(x1, y1, x2, y2: number) (WC) [em Lua]

Define a direção do texto através de dois pontos, (x1,y1) e (x2,y2). A direção padrão é horizontal da esquerda para a direita.

double* cdVectorTextTransform(double* matrix); [em C]
cdVectorTextTransform(matrix: table) -> (old_matrix: table) [em Lua]

Define uma matriz de transformação de 6 elementos. Se a matriz for NULL, nenhuma transformação é configurada. A direção padrão é nenhuma transformação. A origem é no extremo inferior esquerdo da matriz. Retorna a matriz anterior, o vetor retornado só é válido até a chamada seguinte da função.

A matriz contém os elementos de rotação e translação. Ele é aplicada após o cálculo de posição e orientação normais do texto vetorial. Podemos descrever os elementos da seguinte forma:

|x'|   | cos(ang)  -sin(ang)  trans_x |   |x|                 | 3   4   5| 
|y'| = | sin(ang)   cos(ang)  trans_y | * |y|   com indices   | 0   1   2|

void cdVectorTextSize(int w, int h, char *text); [em C]
void wdVectorTextSize(double size_x, double size_y, char *s); (WC) [em C]
cdVectorTextSize(w, h: number, text: string) [em Lua]
wdVectorTextSize(w, h: number, text: string) (WC) [em Lua]

Modifica a escala do vector text para que ele corresponda ao string da caixa envolvente definida por w e h. Ignora strings de múltiplas linhas.

void cdGetVectorTextSize(char *text, int *w, int *h); [em C]
void wdGetVectorTextSize(char * s, double *x, double *y); (WC) [em C]
cdGetVectorTextSize(text: string) -> (w, h: number) [em Lua]
wdGetVectorTextSize(text: string) -> (w, h: number)
(WC) [em Lua]

Consulta a caixa envolvente do string. Ignora strings com múltiplas linhas. Não é necessário fornecer todos os ponteiros de retorno, pode-se fornecer apenas para os valores desejados.

double cdVectorCharSize(int size); [em C]
double wdVectorCharSize(double size); (WC) [em C]
cdVectorCharSize(size: number) -> (old_size: number) [em Lua]
wdVectorCharSize(size: number) -> (old_size: number)
(WC) [em Lua]

Configura a altura dos caracteres e ajusta a espessura de acordo com ela. Fornece como retorno o valor anterior. CD_QUERY dá como retorno o valor corrente.

char* cdVectorFont(char *filename); [em C]
cdVectorFont(filename: string) -> (font_name: string) [em Lua]

Substitui a fonte vetorial corrente por uma fonte armazenada no arquivo com o nome dado. Fornece como retorno o nome da fonte carregada ou NULL, se falhar. Se filename for NULL, ativa a fonte padrão "Simplex II". Não existe um arquivo associado a esta fonte, trata-se de uma fonte integrada. A biblioteca tentará carregar uma fonte do diretório definido pela variável de ambiente "CDDIR", além do parâmetro filename. Se falhar, tentará carregá-la utilizando apenas o parâmetro filename. O formato do arquivo é compatível com o formato de arquivo de fonte do GKS (modo de texto).


Propriedades

int cdGetColorPlanes(void); [em C]
cdGetColorPlanes() -> (bpp: number) [em Lua]

Fornece como retorno um número, digamos p, que define o número de cores suportadas no dispositivo corrente como 2^p. Ele representa o número de bits por pixel.

void cdFontDim(int *max_width, int *line_height, int *ascent, int *descent); [em C]
void wdFontDim(double *max_width, double *height, double *ascent, double *descent); (WC) [em C]
cdFontDim() -> (max_width, max_height, ascent, descent: number)
[em Lua]
wdFontDim() -> (max_width, max_height, ascent, descent: number)
(WC) [em Lua]

Fornece como retorno a espessura máxima de um caracter, a altura da linha e o ascent e descent dos caracteres da fonte corrente selecionada. A altura da linha é a soma dos ascents e descents e de um certo espaço adicional (se for o caso). Todos os valores são dados em pixels. Caso o driver não suporte este tipo de consulta os valores receberão 0 (zero). Não é necessário fornecer todos os ponteiros de retorno, pode-se fornecer apenas para os valores desejados.

void cdTextSize(char *text, int *width, int *height); [em C]
void wdTextSize(char *s, double *width, double *height);
(WC) [em C]
cdTextSize(text: string) -> (width, heigth: number)
[em Lua]
wdTextSize(text: string) -> (width, heigth: number)
(WC) [em Lua]

Fornece como retorno a largura e o comprimento da caixa envolvente de um texto com a fonte corrente selecionada. Caso o driver não suporte este tipo de consulta os valores receberão 0 (zero). Não é necessário fornecer todos os ponteiros de retorno, pode-se fornecer apenas para os valores desejados.

void cdTextBox(int x, int y, char *text, int *xmin, int *xmax, int *ymin, int *ymax); [em C]
void wdTextBox(double x, double y, char *s, double *xmin, double *xmax, double *ymin, double *ymax); (WC) [em C]
cdTextBox(x, y: number, text: string) -> (xmin, xmax, ymin, ymax: number) [em Lua]
wdTextBox(x, y: number, text: string) -> (xmin, xmax, ymin, ymax: number) (WC) [em Lua]

Fornece como retorno o menor retangulo horizontal envolvente a caixa de texto, mesmo que o texto esteja inclinado. É necessário fornecer todos os ponteiros de retorno.

void cdGetVectorTextBounds(char *s, int px, int py, int *rect); [em C]
void wdGetVectorTextBounds(char *s, double x, double y, double *rect); (WC) [em C]
cdGetVectorTextBounds(s: string, px,py
: number) -> (rect: table) [em Lua]
wdGetVectorTextBounds(s: string, px,py: number) -> (rect: table) (WC) [em Lua]

Retorna o retângulo envolvente ao texto especificado na fonte vetorial, alinhamento e direção correntes. São retornados 8 valores que correspondem aos pares (x,y) dos vértices do retângulo ordenados no sentido anti-horário, comecando pelo canto inferior esquerdo.


Codificação de Cores

long int cdEncodeColor(unsigned char red, unsigned char green, unsigned char blue)
cdEncodeColor(r, g, b: number) -> (old_color: color_tag)

Fornece como retorno uma tripla codificada (r,g,b) em um número inteiro longo como 0x00RRGGBB, onde RR são os componentes vermelhos, GG são os verdes e BB são os azuis. O código é utilizado na biblioteca CD para definir cores. Há algumas cores pré-definidas: CD_RED, CD_GREEN, CD_BLUE, CD_DARK_RED, CD_DARK_GREEN, CD_DARK_BLUE, CD_YELLOW, CD_MAGENTA, CD_CYAN, CD_DARK_YELLOW, CD_DARK_MAGENTA, CD_DARK_CYAN, CD_WHITE, CD_BLACK, CD_DARK_GRAY, CD_GRAY. Pode ser utilizado sem um canvas ativo.

void cdDecodeColor(long int color, unsigned char *red, unsigned char *green, unsigned char *blue)
cdDecodeColor(color: color_tag) -> (r, g, b: number)

Fornece como retorno o componente vermelho, verde e azul de uma cor da biblioteca CD. Pode ser utilizado sem um canvas ativo.

unsigned char cdRed(long int color); [em C]
cdRed(color: color_tag) -> (r: number) [em Lua]

Macro que retorna a componente de vermelho de uma cor da biblioteca CD. Pode ser utilizada sem um canvas ativo.

unsigned char cdGreen(long int color); [em C]
cdGreen(color: color_tag) -> (g: number) [em Lua]

Macro que retorna a componente de verde de uma cor da biblioteca CD. Pode ser utilizada sem um canvas ativo.

unsigned char cdBlue(long int color); [em C]
cdBlue(color: color_tag) -> (b: number) [em Lua]

Macro que retorna a componente de azul de uma cor da biblioteca CD. Pode ser utilizada sem um canvas ativo.

void cdPalette(int n, long int *color, int mode); [em C]
cdPalette(palette: palette_tag; mode: number) [em Lua]

Em sistemas limitados a 256 cores de paleta, esta função busca inserir as n cores na paleta do sistema. Nesses sistemas, as cores demandadas para a frente ou o fundo que não estão na paleta são aproximadas com a cor mais próxima disponível. O modo pode ser CD_FORCE ou CD_POLITE. O modo CD_FORCE ignora as cores do sistema e os elementos de interface, pois os menus e diálogos podem estar em cores ilegíveis, porém existirão mais cores disponíveis. Recomenda-se utilizar CD_POLITE. Deve ser sempre atualizada antes de desenhar. Não tem como ser consultada.